java 8 diamond problem